<?php
namespace weixin\Controller;
use Think\Controller;
use Think\Cache\Driver\Memcached;
class IndexController extends Controller {
	
	/**
	 * 新注册用户生成Api调用配置开启接口 
	 */
    public function index(){
		$m = new \Memcache();
		$m->addServer("127.0.0.1", 11211); //$mem->flush();
		var_dump($m->set('a','a'));die;
		$r = $m->get('a');
		var_dump($r);die;
		$uid = I('get.uid');			//获取用户id   根据用户id 查询用户Api信息
        // 保存access_token //初始化缓存设置
        S(array(
            'type'=>'file', 			//缓存方式文件类型
            'prefix'=>'weixin_'.$uid.'_',			//缓存前缀
            'expire'=>7200				//缓存时间
        ));
		$userApi = M('wxapi')->where("wxuid='{$uid}'")->find();
        // 开发者中心-配置项-AppID(应用ID)
        $appId = $userApi['appid'];
        // 开发者中心-配置项-AppSecret(应用密钥)
        $appSecret = $userApi['appsecret'];
        // 开发者中心-配置项-服务器配置-Token(令牌)
        $token = $userApi['wxtoken'];
        // 开发者中心-配置项-服务器配置-EncodingAESKey(消息加解密密钥)
        $encodingAESKey = '072vHYArTp33eFwznlSvTRvuyOTe5YME1vxSoyZbzaV';

        // wechat模块 - 处理用户发送的消息和回复消息
        $wechat = new \Gaoming13\WechatPhpSdk\Wechat(array(
            'appId' => $appId,
            'token' => 	$token,
            'encodingAESKey' =>	$encodingAESKey //可选
        ));
        // api模块 - 包含各种系统主动发起的功能
        $api = new \Gaoming13\WechatPhpSdk\Api(
            array(
                'appId' => $appId,
                'appSecret'	=> $appSecret,
                'get_access_token' => function(){
                    // 用户需要自己实现access_token的返回
                    return S('wechat_token');
                },
                'save_access_token' => function($token) {
                    // 用户需要自己实现access_token的保存
                   S('wechat_token', $token);
                }
            )
        );
        // 获取微信消息
        $msg = $wechat->serve();
		if($msg){
			$message= json_decode(json_encode($msg),true);
			$message['muid'] = $uid;
			M('wxmessage')->add($message);
		}
        // 回复文本消息    匹配文本自动回复   
        if ($msg->MsgType == 'text') {
        	$keyWord = $msg->Content;
			$data = M('wxkeywords')->where("wxkeyword like '%{$keyWord}%'")->find();
						
			/**
			 * 根据查询匹配到的内容类型进行回复
			 */
			if(!empty($data)){
				if($data['wxktype'] == 0){							//自动回复类型 0文字 1图片 2视频 3语音 4文章 5图文推荐
					 $wechat->reply($data['wxkcontent']);
				}else if($data['wxktype'] == 1){
//					$wechat->reply(array(
//					    'type' => 'image',
//					    'media_id' => $data['wxkfilemedia_id']
//					));
					$wechat->reply('图片回复');
				}else if($data['wxktype'] == 2){
					$wechat->reply(array(
					    'type' => 'video',
					    'media_id' => $data['wxkfilemedia_id'],
					    'title' => $data['wxktitle'],        		 //可选
					    'description' => $data['wxkcontent']        //可选
					));
				}else if($data['wxktype'] == 3){
					$wechat->reply(array(
					    'type' => 'voice',
					    'media_id' =>$data['wxkfilemedia_id']
					));
				}else if($data['wxktype'] == 4){					//单片文章
					$wechat->reply(array(
					    'type' => 'news',
					        'articles' => array(
					         array(
					            'title' => $data['wxktitle'] ,                          //可选
					            'description' => substr($data['wxkcontent'], 0,100),    //可选
					            'picurl' => $data['wxmedia_url'],  						//可选  这里需要写绝对路径网络图
					            'url' => 'http://coollhg.vicp.cc/'                      //可选
					         )
					    )
					));
				}
			} else {
            	$wechat->reply($userApi['wxnoanswer']);
        	}
        }else if ($msg->MsgType == 'image') {
        	$wechat->reply('您发送的图片信息【哆啦a梦】已接受，稍后大熊将处理您发送的消息');
        }else if($msg->MsgType == 'video'){
        	$wechat->reply('您发送的视频信息【哆啦a梦】已接受，稍后大熊将处理您发送的消息');
        }else if($msg->MsgType == 'voice'){
        	$wechat->reply('您发送的语音信息【哆啦a梦】已接受，稍后大熊将处理您发送的消息');
        }else if($msg->MsgType == 'shortvideo'){
        	$wechat->reply('您发送的小视频信息【哆啦a梦】已接受，稍后大熊将处理您发送的消息');
        }else if($msg->MsgType == 'location'){
        	$wechat->reply('您发送的位置信息【哆啦a梦】已接受，稍后大熊将处理您发送的消息');
        }else if($msg->MsgType == 'link'){
        	$wechat->reply('您发送的链接消息【哆啦a梦】已接受，稍后大熊将处理您发送的消息');
        }else if($msg->MsgType == 'event'){  //获取event消息事件 
			//执行消息事件获取
			$Event = $wechat->get_Event(); 
			//判断是否是关注事件
			if($Event['Event'] == 'subscribe'){
				//将关注消息事件写入数据库
				$openid = $Event['FromUserName'];
				//找找是否存在
				$WxUser = M("wxuser")->where("openid = '{$openid}'")->find();
				if(empty($WxUser)){				//如果不存在将用户记录数据库  同时查询用书数据 信息				
//					//查询用户个人信息
					list($err,$res) =$api->get_user_info($openid);
					if($res){
						$res = json_decode(json_encode($res),ture);
						$data = $res;
					}
//					//获取openid 关注时间					
					$data['openid']	 =$openid;
					$data['subscribe_time']  = $Event['CreateTime'];
					$data['uid']			 = $uid; 
					M("wxuser")->add($data);
					$wechat->reply($userApi['wxwelcome']);
				}else{
					$wechat->reply('欢迎再次关注本公众号');
				}
			}else if($Event['Event'] == 'unsubscribe'){
//				$openid = $Event['openid'];
//				//删除用户
//				M("wxuser")->where("openid = '{$openid}'")->delete();
				$wechat->reply('您取消了关注，欢迎再次关注');	
			}
		}
//		else{
//			$wechat->reply('');	
//		}



}
	 
	 
	 /**
	  * 获取api
	  */
	public function getApi(){
		$uid = $_SESSION['uid'];			//获取用户id
         // 保存access_token //初始化缓存设置
        S(array(
            'type'=>'file', 			//缓存方式文件类型
            'prefix'=>'weixin_'.$uid.'_',			//缓存前缀
            'expire'=>7200				//缓存时间
        ));
		$userApi = M('wxapi')->where("wxuid='{$uid}'")->find();
        // 开发者中心-配置项-AppID(应用ID)
        $appId = $userApi['appid'];
        // 开发者中心-配置项-AppSecret(应用密钥)
        $appSecret = $userApi['appsecret'];
        // 开发者中心-配置项-服务器配置-Token(令牌)
        $token = $userApi['wxtoken'];
        // 开发者中心-配置项-服务器配置-EncodingAESKey(消息加解密密钥)
        $encodingAESKey = '072vHYArTp33eFwznlSvTRvuyOTe5YME1vxSoyZbzaV';

        // wechat模块 - 处理用户发送的消息和回复消息
        $wechat = new \Gaoming13\WechatPhpSdk\Wechat(array(
            'appId' => $appId,
            'token' => 	$token,
            'encodingAESKey' =>	$encodingAESKey //可选
        ));
        // api模块 - 包含各种系统主动发起的功能
        $api = new \Gaoming13\WechatPhpSdk\Api(
            array(
                'appId' => $appId,
                'appSecret'	=> $appSecret,
                'get_access_token' => function(){
                    // 用户需要自己实现access_token的返回
                    return S('wechat_token');
                },
                'save_access_token' => function($token) {
                    // 用户需要自己实现access_token的保存
                   S('wechat_token', $token);
                }
            )
        );
	}

}

